import { takeEvery, put, delay } from "redux-saga/effects"
import { updateUsers, async_getUsers, ASYNC_GETUSERS } from "../action/index"
import axios from "axios"

// 1、takeEvery 接受 action
// 2、put 触发 action

// 执行异步操作：
// 在 saga 中执行异步操作不用 setTimeout，为什么？而是用 delay
function* async_getUsers_fn (action) {
    yield delay(2000)

    // 通过 action.url 接受组件传过来的参数
    const { data } = yield axios.get(action.url)

    console.log("users:", data)
    yield put(updateUsers(data))
}


// 导出 Generator 函数
export default function* pageSaga (url) {
    // 接受 action 的 type
    yield takeEvery(ASYNC_GETUSERS, async_getUsers_fn)
}